package com.jielihaofeng.nio.filechannel;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

/**
 * @description Files api使用
 * @author Johnnie Wind
 * @date 2021/10/10 15:31
 */
public class TestFiles {

    public static void main(String[] args) throws IOException {

        // 检查文件是否存在
        Path path = Paths.get("study-netty/data.txt");
        System.out.println(Files.exists(path));

        // 创建一级目录
        Path path1 = Paths.get("study-netty/1");
        Files.createDirectory(path1);

        // 创建多级目录
        Path path2 = Paths.get("study-netty/1/2");
        Files.createDirectories(path2);

        // 拷贝文件
        Path source = Paths.get("study-netty/source.txt");
        Path target = Paths.get("study-netty/target.txt");
        Files.copy(source, target);

        // 如果文件存在，会抛异常 FileAlreadyExistException
        // 如果希望用 source 覆盖掉 target，需要用 StandardCopyOption 来控制
        Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);

        // 移动文件
        // StandardCopyOption.ATOMIC_MOVE 保证文件移动的原子性
        Files.move(source, target, StandardCopyOption.ATOMIC_MOVE);

        // 删除文件
        // 如果文件不存在，会抛异常 NoSuchFileException
        Files.delete(target);

        // 删除目录
        // 如果目录还有内容，会抛异常 DirectoryNotEmptyException
        Files.delete(target);
    }
}
